#ifndef VIDEO_DECODER_H
#define VIDEO_DECODER_H

#include "Media/Decoder/BaseDecoder.h"
#include <thread>
#include <queue>
#include <mutex>
#include <QObject>
#include <condition_variable>
#include "Media/Sync/sync.h"
#include <QImage>
class VideoDecoder : public QObject, public BaseDecoder {
    Q_OBJECT

public:

    VideoDecoder();

    ~VideoDecoder() override;

    // 初始化视频解码器。
    bool init(const AVCodecContextPtr& codec_ctx) override;
    // 解码视频数据。
    bool decode(AVPacket* packet) override;

    // 释放视频解码器资源。
    void release() override;

    void adjustPlaybackSpeed(int speed) ;
private:
    AVCodecContext* codec_ctx_ = nullptr;

    std::thread decodeThread_;
    bool isRunning_ = false;


};

#endif // VIDEO_DECODER_H
